home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / lists / mint / l_0399 / 172 < prev    next >
Internet Message Format  |  1994-08-27  |  2KB

  1. Date: Tue, 23 Mar 93 14:32:25 -0800
  2. From: ersmith@netcom.com (Eric R. Smith)
  3. Message-Id: <9303232232.AA21651@netcom4.netcom.com>
  4. To: steve@earth.ox.ac.uk
  5. Subject: Re: seduid scripts
  6.  
  7. >>> > [about /bin/scripter]
  8. >>> 
  9. >>> This sounds an even more unholy mess than one incidence of / -> \ conversion
  10. >>> in the kernel! Anyway, it's just one more security hole, not that there
  11. >>> aren't one or two already! :-)
  12. >>
  13. >>Why is that an security hole?  `/bin/scripter' would be just another shell
  14. >>which happens to be setuid-root (just like `su').
  15.  
  16. >It's just one more program which could be compromised.
  17.  
  18. As are any setuid scripts. So why don't we just disallow setuid scripts?
  19. Then there's no problem: exec can just read the line after #!, shift all
  20. the arguments down by one, insert the shell file name, and continue on
  21. its way. In fact, that brings up another reason why it should be done in
  22. the library: the kernel doesn't handle ARGV parsing. Maybe it should; but
  23. that would mean a whole new system call, and a lot of unnecessary code
  24. duplication.
  25.  
  26. >Exec should preferably be an atomic action. Also, there is an implicit
  27. >assumption that you hold your executables in /bin. What if the script is for
  28. >something other than /bin/[c]sh, maybe you want to run /exec/bloggs/gruncher
  29. >and don't have a /bin on the current drive? Putting the parsing of the #!
  30. >magic number in the kernel would make the kernel self contained, and hence
  31. >less able to be totally fouled up by the half-clued or clueless.
  32.  
  33. If the script isn't setuid, then there's no problem (exec can execute
  34. it directly, it doesn't need a setuid /bin/scripter). If the script
  35. is setuid, then you can (a) require that there be a /bin/scripter,
  36. or (b) use an environment variable like $SETUIDSCRIPT to override the
  37. default assignment.
  38.  
  39. If we're worried about the half-clued or clueless, then I would say that
  40. we should be more concerned about naive TOS users who don't know that /
  41. is a unix path separators than unix experienced people who are trying
  42. to build setuid shell scripts.
  43.  
  44. Eric
  45.